//zoj 2770
int a[Maxn],s[Maxn];
int first[Maxn],next[Maxn*100],M,c[Maxn*100],E[Maxn*100],C[Maxn*100],d[Maxn];
#define inf  0x3fffffff
void init()
{
	M=-1;
	memset(first,-1,sizeof(first));
	memset(next,0,sizeof(next));
	memset(c,0,sizeof(c));
//	memset(Ef,0,sizeof(Ef));
	memset(E,0,sizeof(E));
}
void insert(int i,int j,int a)
{
	M++;
	next[M]=first[i];
	first[i]=M;
	E[M]=j;
	C[M]=a;
}
/******************************
差分约束模板 实际上是在求最长路
i+z<=j     
insert(i,j,z);    
spfa的起点是最小值点,可以设为0，然后求最长路，
如果有正环那么就无解
*************************/
int spfa(int n)
{	int i;
	int in[Maxn],visit[Maxn];
	memset(in,0,sizeof(in));
	memset(visit,0,sizeof(visit));
	queue<int>q;
	q.push(0);
	for(i=0; i<n+1; i++)
	{
	/*******差分约束模板******************/
		d[i]=-inf;//这个地方为负无穷
	/*******差分约束模板******************/
	}
	d[0]=0;
	int v;
	while(!q.empty())
	{
		v =q.front();q.pop();
		in[v]++;
		visit[v]=0;
		if(in[v]>n+2)	return 0; 
		for(int e=first[v]; e!=-1; e= next[e])
		{
			int u =E[e];
			/*******差分约束模板******************/
			if(d[v]+C[e]>d[u])//注意这个地方写法
			/*******差分约束模板******************/
			{
				d[u]=d[v]+C[e];
				if(!visit[u])
				{
					visit[u]=1;
					q.push(u);
				}
			}
		}
	}
	return 1;
}
int main()
{
 	#ifndef ONLINE_JUDGE
	freopen("in","r",stdin);
#endif
	int i,n,m,j,k,t;
	while(scanf("%d%d", &n,&m)!=EOF)
	{
		init();
		int x,y,z;
		memset(a,0,sizeof(a));
		memset(s,0,sizeof(s));

		for(i=1; i<=n; i++)
		{
			scanf("%d", &a[i]);
			s[i]=s[i-1]+a[i];
			insert(i,i-1,-a[i]);
			insert(i-1,i,0);
		}	
		
		
		for(i=0; i<m; i++)
		{
			scanf("%d%d%d", &x,&y,&z);
			insert(x-1,y,z);
			
		}
		
		if(spfa(n))
		{
			printf("%d\n",d[n]-d[0]);
		}
		else
			printf("Bad Estimations\n");
		
	}
		
}


